package com.zx.validation.enums;

import lombok.Getter;

/**
 * 日期格式枚举
 *
 * @author zhou xun
 * @since 2024-10-31
 */
@Getter
public enum DateTimeFormatEnum {
    /**
     * 仅时间格式: HH:mm (例如 "14:30")
     */
    TIME("HH:mm"),

    /**
     * 完整日期时间格式: yyyy-MM-dd HH:mm:ss (例如 "2023-01-15 14:30:00")
     */
    DATE_TIME("yyyy-MM-dd HH:mm:ss"),

    /**
     * 紧凑型日期时间格式: yyyyMMddHHmmss (例如 "20230115143000")
     */
    DATE_TIME_STR("yyyyMMddHHmmss"),

    /**
     * 年-月-日格式: yyyy-MM-dd (例如 "2023-01-15")
     */
    YEAR("yyyy-MM-dd"),

    /**
     * 无分隔符日期格式: yyyyMMdd (例如 "20230115")
     */
    YEAR_NO_SPIT("yyyyMMdd"),

    /**
     * 紧凑型时间格式: HHmmss (例如 "143000")
     */
    DATE_TIME_PATTERN("HHmmss"),

    /**
     * 带时区的完整日期时间格式: yyyy-MM-dd HH:mm:ss XXX (例如 "2023-01-15 14:30:00 +08:00")
     */
    DATE_TIME_WITH_TIMEZONE("yyyy-MM-dd HH:mm:ss XXX"),

    /**
     * 仅日期（无时间）: yyyy-MM-dd (例如 "2023-01-15")
     */
    DATE_ONLY("yyyy-MM-dd"),

    /**
     * 仅时间（无日期）: HH:mm:ss (例如 "14:30:00")
     */
    TIME_ONLY("HH:mm:ss"),

    /**
     * ISO 8601 标准格式（带时区）: yyyy-MM-dd'T'HH:mm:ssXXX (例如 "2023-01-15T14:30:00+08:00")
     */
    ISO8601("yyyy-MM-dd'T'HH:mm:ssXXX"),

    /**
     * RFC 2822 格式: EEE, dd MMM yyyy HH:mm:ss Z (例如 "Tue, 15 Jan 2023 14:30:00 +0800")
     */
    RFC2822("EEE, dd MMM yyyy HH:mm:ss Z"),

    /**
     * RFC 3339 格式: yyyy-MM-dd'T'HH:mm:ss.SSSXXX (例如 "2023-01-15T14:30:00.123+08:00")
     */
    RFC3339("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"),

    /**
     * 中文日期格式: yyyy年MM月dd日 HH时mm分ss秒 (例如 "2023年01月15日 14时30分00秒")
     */
    CHINESE("yyyy年MM月dd日 HH时mm分ss秒"),

    /**
     * 空格式
     */
    NULL("");

    private final String pattern;

    DateTimeFormatEnum(String pattern) {
        this.pattern = pattern;
    }
}
